<FrameworkSwitchCourse {fw} />

# Fine-tuning လုပ်ငန်း ပြီးစီးပြီ![[fine-tuning-check]]

<CourseFloatingBanner
    chapter={3}
    classNames="absolute z-10 right-0 top-0"
/>

ဒါက ပြည့်စုံလွန်းပါတယ်။ ပထမအခန်းနှစ်ခန်းမှာ သင်ဟာ models တွေနဲ့ tokenizers တွေအကြောင်း သင်ယူခဲ့ပြီး၊ အခုတော့ ခေတ်မီ အကောင်းဆုံးအလေ့အကျင့်တွေကို အသုံးပြုပြီး သင်ရဲ့ကိုယ်ပိုင်ဒေတာအတွက် ၎င်းတို့ကို ဘယ်လို fine-tune လုပ်ရမယ်ဆိုတာ သင်သိသွားပါပြီ။ အနှစ်ချုပ်အနေနဲ့၊ ဒီအခန်းမှာ သင်ဟာ အောက်ပါတို့ကို သင်ယူခဲ့ပါပြီ။

*   [Hub](https://huggingface.co/datasets) ပေါ်က datasets တွေနဲ့ ခေတ်မီ data processing နည်းလမ်းတွေအကြောင်း သင်ယူခဲ့သည်။
*   dynamic padding နဲ့ data collators တွေကို အသုံးပြုခြင်းအပါအဝင် datasets တွေကို ထိရောက်စွာ load လုပ်ပြီး preprocessing လုပ်နည်းကို သင်ယူခဲ့သည်။
*   နောက်ဆုံးပေါ် features တွေပါဝင်တဲ့ high-level `Trainer` API ကို အသုံးပြုပြီး fine-tuning နဲ့ evaluation ကို အကောင်အထည်ဖော်ခဲ့သည်။
*   PyTorch နဲ့ အစကနေ အဆုံးထိ ပြည့်စုံတဲ့ custom training loop တစ်ခုကို အကောင်အထည်ဖော်ခဲ့သည်။
*   multiple GPUs ဒါမှမဟုတ် TPUs တွေပေါ်မှာ သင်ရဲ့ training code ကို ချောမွေ့စွာ အလုပ်လုပ်နိုင်စေဖို့ 🤗 Accelerate ကို အသုံးပြုခဲ့သည်။
*   mixed precision training နဲ့ gradient accumulation လိုမျိုး ခေတ်မီ optimization နည်းလမ်းတွေကို အသုံးချခဲ့သည်။

> [!TIP]
> 🎉 **ဂုဏ်ယူပါတယ်!** သင်ဟာ transformer models တွေကို fine-tuning လုပ်တဲ့ အခြေခံအချက်တွေကို ကျွမ်းကျင်သွားပါပြီ။ အခု သင်ဟာ လက်တွေ့ ML (Machine Learning) project တွေကို ကိုင်တွယ်ဖို့ အဆင်သင့်ဖြစ်နေပါပြီ!
>
> 📖 **ဆက်လက်လေ့လာရန်**: သင်၏ အသိပညာကို နက်ရှိုင်းစေရန် ဤအရင်းအမြစ်များကို လေ့လာပါ။
> - သီးခြား NLP (Natural Language Processing) လုပ်ငန်းများအတွက် [🤗 Transformers task guides](https://huggingface.co/docs/transformers/main/en/tasks/sequence_classification)
> - ပြည့်စုံသော notebooks များအတွက် [🤗 Transformers examples](https://huggingface.co/docs/transformers/main/en/notebooks)
>
> 🚀 **နောက်တစ်ဆင့်များ**:
> - သင်သင်ယူခဲ့သော နည်းလမ်းများကို အသုံးပြုပြီး သင်၏ကိုယ်ပိုင် dataset ပေါ်တွင် fine-tuning လုပ်ကြည့်ပါ။
> - [Hugging Face Hub](https://huggingface.co/models) ပေါ်မှာ ရရှိနိုင်တဲ့ မတူညီတဲ့ model architectures များကို စမ်းသပ်ကြည့်ပါ။
> - သင်၏ project များကို မျှဝေရန်နှင့် အကူအညီရယူရန် [Hugging Face community](https://discuss.huggingface.co/) သို့ ဝင်ရောက်ပါ။

ဒါက 🤗 Transformers နဲ့ သင်၏ ခရီးရဲ့ အစသာ ရှိပါသေးတယ်။ နောက်အခန်းမှာတော့ သင်၏ models တွေနဲ့ tokenizers တွေကို လူအဖွဲ့အစည်း (community) နဲ့ ဘယ်လို မျှဝေရမယ်၊ ပြီးတော့ တဖြည်းဖြည်း တိုးတက်နေတဲ့ pretrained models တွေရဲ့ ecosystem ကို ဘယ်လို ပံ့ပိုးပေးရမယ်ဆိုတာကို ကျွန်တော်တို့ လေ့လာသွားပါမယ်။

ဒီနေရာမှာ သင်တည်ဆောက်ခဲ့တဲ့ ကျွမ်းကျင်မှုတွေ - ဒေတာ preprocessing၊ training configuration၊ evaluation နဲ့ optimization - တွေဟာ မည်သည့် machine learning project အတွက်မဆို အခြေခံကျပါတယ်။ သင် text classification၊ named entity recognition၊ question answering ဒါမှမဟုတ် အခြား NLP လုပ်ငန်းတစ်ခုခုမှာ အလုပ်လုပ်နေသည်ဖြစ်စေ၊ ဒီနည်းလမ်းတွေက သင့်ကို အထောက်အကူပြုပါလိမ့်မယ်။

> [!TIP]
> 💡 **အောင်မြင်မှုအတွက် အကြံပြုချက်များ**:
> - custom training loops တွေကို အကောင်အထည်မဖော်ခင် `Trainer` API ကို အသုံးပြုပြီး ခိုင်မာတဲ့ baseline တစ်ခုနဲ့ အမြဲတမ်း စတင်ပါ။
> - ပိုမိုကောင်းမွန်တဲ့ starting points တွေအတွက် သင့်လုပ်ငန်းနဲ့ နီးစပ်တဲ့ pretrained models တွေကို ရှာဖွေဖို့ 🤗 Hub ကို အသုံးပြုပါ။
> - သင်၏ training ကို မှန်ကန်တဲ့ evaluation metrics တွေနဲ့ စောင့်ကြည့်ပါ ပြီးတော့ checkpoints တွေကို သိမ်းဆည်းဖို့ မမေ့ပါနဲ့။
> - လူအဖွဲ့အစည်းကို အကျိုးယူပါ - အခြားသူများကို ကူညီရန်နှင့် သင်၏အလုပ်အပေါ် တုံ့ပြန်ချက်ရယူရန် သင်၏ models တွေနဲ့ datasets တွေကို မျှဝေပါ။

## ဝေါဟာရ ရှင်းလင်းချက် (Glossary)

*   **Fine-tuning**: ကြိုတင်လေ့ကျင့်ထားပြီးသား (pre-trained) မော်ဒယ်တစ်ခုကို သီးခြားလုပ်ငန်းတစ်ခု (specific task) အတွက် အနည်းငယ်သော ဒေတာနဲ့ ထပ်မံလေ့ကျင့်ပေးခြင်းကို ဆိုလိုပါတယ်။
*   **Models**: Artificial Intelligence (AI) နယ်ပယ်တွင် အချက်အလက်များကို လေ့လာပြီး ခန့်မှန်းချက်များ ပြုလုပ်ရန် ဒီဇိုင်းထုတ်ထားသော သင်္ချာဆိုင်ရာဖွဲ့စည်းပုံများ။
*   **Tokenizers**: စာသား (သို့မဟုတ် အခြားဒေတာ) ကို AI မော်ဒယ်များ စီမံဆောင်ရွက်နိုင်ရန် tokens တွေအဖြစ် ပိုင်းခြားပေးသည့် ကိရိယာ သို့မဟုတ် လုပ်ငန်းစဉ်။
*   **Hub (Hugging Face Hub)**: AI မော်ဒယ်တွေ၊ datasets တွေနဲ့ demo တွေကို အခြားသူတွေနဲ့ မျှဝေဖို့၊ ရှာဖွေဖို့နဲ့ ပြန်လည်အသုံးပြုဖို့အတွက် အွန်လိုင်း platform တစ်ခု ဖြစ်ပါတယ်။
*   **Data Processing Techniques**: ဒေတာများကို model က နားလည်ပြီး လုပ်ဆောင်နိုင်တဲ့ ပုံစံအဖြစ် ပြောင်းလဲပြင်ဆင်ခြင်း နည်းလမ်းများ။
*   **Dynamic Padding**: Batch တစ်ခုအတွင်းရှိ samples များကို အဲဒီ batch ထဲက အရှည်ဆုံး sample ရဲ့ အရှည်အထိသာ padding လုပ်တဲ့ နည်းလမ်း။
*   **Data Collators**: batch တစ်ခုအတွင်း samples များကို စုစည်းပေးသော functions သို့မဟုတ် classes များ။
*   **High-level API (Application Programming Interface)**: အသုံးပြုရလွယ်ကူစေရန် ရှုပ်ထွေးသော အသေးစိတ်အချက်အလက်များကို ဖုံးကွယ်ထားသော ပရိုဂရမ်ရေးသားခြင်း interface။
*   **`Trainer` API**: Hugging Face Transformers library မှ model များကို ထိရောက်စွာ လေ့ကျင့်ရန်အတွက် ဒီဇိုင်းထုတ်ထားသော မြင့်မားသောအဆင့် (high-level) API။
*   **Evaluation**: မော်ဒယ်၏ စွမ်းဆောင်ရည်ကို တိုင်းတာခြင်း။
*   **Custom Training Loop**: Trainer API ကဲ့သို့သော abstractions များကို အသုံးမပြုဘဲ PyTorch library ၏ အခြေခံလုပ်ဆောင်ချက်များဖြင့် model ကို လေ့ကျင့်ရန် code ကို ကိုယ်တိုင်ရေးသားခြင်း။
*   **PyTorch**: Facebook (ယခု Meta) က ဖန်တီးထားတဲ့ open-source machine learning library တစ်ခုဖြစ်ပြီး deep learning မော်ဒယ်တွေ တည်ဆောက်ဖို့အတွက် အသုံးပြုပါတယ်။
*   **🤗 Accelerate**: Hugging Face က ထုတ်လုပ်ထားတဲ့ library တစ်ခုဖြစ်ပြီး PyTorch training loops တွေကို code အပြောင်းအလဲ အနည်းငယ်နဲ့ distributed training (multiple GPUs, TPUs) မှာ run နိုင်အောင် ကူညီပေးပါတယ်။
*   **Multiple GPUs (Graphics Processing Units)**: ဂရပ်ဖစ်လုပ်ဆောင်မှုအတွက် အထူးဒီဇိုင်းထုတ်ထားသော processor များစွာကို အသုံးပြုခြင်း။ AI/ML (Artificial Intelligence/Machine Learning) လုပ်ငန်းများတွင် အရှိန်မြှင့်ရန် အသုံးများသည်။
*   **TPUs (Tensor Processing Units)**: Google မှ AI/ML workloads များအတွက် အထူးဒီဇိုင်းထုတ်ထားသော processor များစွာ။
*   **Mixed Precision Training**: မော်ဒယ်ကို လေ့ကျင့်ရာတွင် 16-bit floating-point numbers (fp16) နှင့် 32-bit floating-point numbers (fp32) နှစ်မျိုးလုံးကို ရောစပ်အသုံးပြုခြင်း။ ၎င်းသည် training ကို မြန်ဆန်စေပြီး memory အသုံးပြုမှုကို လျှော့ချသည်။
*   **Gradient Accumulation**: GPU memory ကန့်သတ်ချက်ရှိသောအခါ ပိုကြီးမားသော batch sizes များကို အတုယူရန် batches အများအပြားပေါ်တွင် gradients များကို စုဆောင်းပြီးမှ update လုပ်ခြင်း။
*   **ML Projects (Machine Learning Projects)**: Machine learning နည်းပညာများကို အသုံးပြု၍ ပြဿနာတစ်ခုကို ဖြေရှင်းရန် လုပ်ဆောင်သော project များ။
*   **`task guides` (Transformers)**: Transformers library ကို အသုံးပြု၍ သီးခြား NLP (Natural Language Processing) လုပ်ငန်းများကို လုပ်ဆောင်ရန် လမ်းညွှန်များ။
*   **`notebooks` (Transformers)**: Hugging Face Transformers library ကို အသုံးပြုပုံဥပမာများ ပါဝင်သော Jupyter Notebooks များ။
*   **Model Architectures**: Model တစ်ခု၏ layers များနှင့် ၎င်းတို့ ချိတ်ဆက်ပုံကို ဖော်ပြသော ဒီဇိုင်းဖွဲ့စည်းပုံ။
*   **Community**: Hugging Face တွင် AI/ML နယ်ပယ်မှ သုံးစွဲသူများ၊ developer များနှင့် သုတေသီများ စုစည်းထားသော အဖွဲ့အစည်း။
*   **Preprocessing**: ဒေတာများကို model က နားလည်ပြီး လုပ်ဆောင်နိုင်တဲ့ ပုံစံအဖြစ် ပြောင်းလဲပြင်ဆင်ခြင်း လုပ်ငန်းစဉ်။
*   **Training Configuration**: Model ကို လေ့ကျင့်ရန်အတွက် လိုအပ်သော setting များနှင့် parameters များကို သတ်မှတ်ခြင်း။
*   **Optimization**: Model ၏ စွမ်းဆောင်ရည်ကို မြှင့်တင်ရန် သို့မဟုတ် training ကို ပိုမိုထိရောက်စေရန် နည်းလမ်းများ။
*   **Text Classification**: စာသားကို သတ်မှတ်ထားသော အမျိုးအစားများထဲသို့ ခွဲခြားသတ်မှတ်ခြင်း။
*   **Named Entity Recognition (NER)**: စာသားထဲက လူအမည်၊ နေရာအမည်၊ အဖွဲ့အစည်းအမည် စတဲ့ သီးခြားအမည်တွေကို ရှာဖွေဖော်ထုတ်ခြင်း။
*   **Question Answering**: မေးခွန်းတစ်ခုအတွက် စာသားထဲမှ အဖြေကို ရှာဖွေခြင်း။
*   **Baseline**: ပထမဆုံး စွမ်းဆောင်ရည် စစ်ဆေးရန် အသုံးပြုသော အခြေခံ model သို့မဟုတ် ရလဒ်။
*   **Pretrained Models**: အကြီးစား ဒေတာအမြောက်အမြားဖြင့် ကြိုတင်လေ့ကျင့်ထားပြီးဖြစ်သော AI (Artificial Intelligence) မော်ဒယ်များ။
*   **Evaluation Metrics**: Model ၏ စွမ်းဆောင်ရည်ကို တိုင်းတာရန် အသုံးပြုသော တန်ဖိုးများ (ဥပမာ- accuracy, F1 score)။
*   **Checkpoints**: မော်ဒယ်၏ weights များနှင့် အခြားဖွဲ့စည်းပုံများ (configuration) ကို သတ်မှတ်ထားသော အချိန်တစ်ခုတွင် သိမ်းဆည်းထားခြင်း။
*   **Feedback**: လုပ်ဆောင်မှုတစ်ခုအပေါ် ရရှိသော တုံ့ပြန်မှု သို့မဟုတ် အကြံပြုချက်များ။